
package controllers;


import play.data.*;
import play.mvc.*;
import models.*;
import views.html.categorie.*;


public class Categorie extends Controller {
	
	static Form<Categoria> categoriaForm = Form.form(Categoria.class);


	//SHOW
    @Security.Authenticated(Secured.class)
	public static Result categorie() {
		return ok(categoria.render(Categoria.find.orderBy("denominazione").findList(), categoriaForm,false,false));
	}
	
	//NEW
    @Security.Authenticated(SecuredWriter.class)
	public static Result newCategoria() {
		Form<Categoria> filledForm = categoriaForm.bindFromRequest();
		  if(filledForm.hasErrors()) {
			  return badRequest(nuova_categoria.render( filledForm,false));
		  } 
		  else {
			  if(!Categoria.create(filledForm.get())){
					return ok(nuova_categoria.render(filledForm,true));
			  }	  
				
			  return ok(categoria.render(Categoria.all(), categoriaForm,false,true));
		  }
	}
	
	
	//DELETE
    @Security.Authenticated(SecuredWriter.class)
	public static Result deleteCategoria(Long id) {
		if(!Categoria.delete(id)){
			return ok(categoria.render(Categoria.all(), categoriaForm,true,false));
			
		}
		return ok(categoria.render(Categoria.all(), categoriaForm,false,true));

	}
	
	//EDIT
    @Security.Authenticated(SecuredWriter.class)	
	public static Result editCategoria(Long id) {
			
		Categoria daModificare=Categoria.find.byId(id);
			  	    
		Form<Categoria> filledForm = Form.form(Categoria.class).bindFromRequest();
		    
		if(filledForm.hasErrors()) {
			if(Categoria.update(daModificare)){
				return badRequest(edit_categoria.render(Categoria.all(), filledForm.fill(daModificare),id,daModificare,false));
			}
			else return redirect(routes.Categorie.categorie()); 
		}
		   	else{
		   			daModificare.id=id;
		   			daModificare.denominazione=filledForm.get().denominazione;
		   			daModificare.categoria=filledForm.get().categoria;
		    		
		   			if(!Categoria.update(daModificare)){
		   				return ok(edit_categoria.render(Categoria.all(), filledForm.fill(Categoria.find.byId(daModificare.id)),id,daModificare,true));
		   			}
		    		
		   			return ok(categoria.render(Categoria.all(), categoriaForm,false,true));
			} 
			
		}

}